﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Intermediario;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;

using System.Collections;
using negocio;


namespace ServidorPrincipal
{
    class Servidor : MarshalByRefObject, IServidorPrincipal
    {
        private ArrayList ListaDeClientes = new ArrayList();

        public void Conectar(IClienteNotaria Nuevo, string nombre, int id)
        {
            ClienteCompleto MiClienteCompleto = new ClienteCompleto();
            MiClienteCompleto.ElCliente = Nuevo;
            MiClienteCompleto.Nombre = nombre;
            MiClienteCompleto.Id = id;

            //Verificar el nombre en la lista para no aceptar repetidos
            string ListaNombres = "";
            foreach (ClienteCompleto ClienteActual in this.ListaDeClientes)
            {
                ListaNombres += ClienteActual.Nombre + ";";
            }

            this.ListaDeClientes.Add(MiClienteCompleto);

            Console.WriteLine(nombre + " se conecto al servidor.");
        }

        public void Desconectar(IClienteNotaria Viejo, string nombre)
        {

            this.ListaDeClientes.Remove(Viejo);

            Console.WriteLine(nombre + " se desconecto del Servidor.");
        }

        public ArrayList ObtenerBandejaFuncionario(int idNotaria, int opcion)
        {
            CitaBO citaBO = new CitaBO();
            ArrayList listObj = new ArrayList();
            //citas por agendar

            listObj = citaBO.listarCitas(opcion, idNotaria);
            return listObj;
        }

        public ArrayList ObtenerSolictantes(int idNotaria)
        {
            CitaBO citaBO = new CitaBO();
            ArrayList listObj = new ArrayList();
            //citas por agendar
            
            listObj = citaBO.listarCitas(1, idNotaria);
            return listObj;
        }


        public void AsignarCita(IClienteNotaria cliente, Cita obj)
        {
            Console.WriteLine(obj.IdAsignador);

            CitaBO citaBO = new CitaBO();
            citaBO.actualizarCitaPorAsignador(obj.IdCita, obj.IdAsignador, obj.FechaCita);
            cliente.RespuestaPeticion("La cita fue asignada.");
            //throw new NotImplementedException();
        }


        public Cita getObjectCita()
        {
            Cita obj = new Cita();
            obj.IdCita = 1;
            obj.IdSolicitante = 1;
            obj.NombreSol = "Erwin Alegria";
            obj.IdNotaria = 1;
            obj.NombreNota = "Notaria Popayan";
            obj.TipoTramite = 1;
            obj.NombreTramite = "Registro Civil";

            return obj;
            //throw new NotImplementedException();
        }
    }
}
